/**
 * @FileName: 1447_simplified_fractions.go
 * @Description: 1447. 最简分数
给你一个整数 n ，请你返回所有 0 到 1 之间（不包括 0 和 1）满足分母小于等于  n 的 最简 分数 。分数可以以 任意 顺序返回。

示例 1：

输入：n = 2
输出：["1/2"]
解释："1/2" 是唯一一个分母小于等于 2 的最简分数。
示例 2：

输入：n = 3
输出：["1/2","1/3","2/3"]
示例 3：

输入：n = 4
输出：["1/2","1/3","1/4","2/3","3/4"]
解释："2/4" 不是最简分数，因为它可以化简为 "1/2" 。
示例 4：

输入：n = 1
输出：[]
https://leetcode-cn.com/problems/simplified-fractions/

 * @Author: shouzimu
 * @Date: 2022/2/10 11:16
*/

package main

import "fmt"

/**
只要两个数的最大公约数为1就是最简分数
*/
func simplifiedFractions(n int) []string {
	res := make([]string, 0)
	euclid := func(no1, no2 int) int {
		remainder := no1 % no2
		for remainder != 0 {
			no1 = no2
			no2 = remainder
			remainder = no1 % no2
		}
		return no2
	}
	for i := 1; i < n; i++ {
		for j := i + 1; j <= n; j++ {
			if euclid(i, j) == 1 {
				res = append(res, fmt.Sprintf("%d/%d", i, j))
			}
		}
	}
	return res
}

func main() {
	fmt.Print(simplifiedFractions(4))
}
